/**
 * 
 */
package DAO;

import java.sql.ResultSet;
import java.util.ArrayList;




import POJO.DanhMuc;
import Util.DataProvider;

/**
 * @author THIEUQUANG
 * 
 */
public class DanhMucDAO
{

    /**
     * Lấy danh mục sản phẩm
     * 
     * @return Danh sách DanhMuc
     */
    public static ArrayList<DanhMuc> SelectDanhMucALL()
    {
        ArrayList<DanhMuc> listDanhMuc = new ArrayList<DanhMuc>();

        try
        {
            String sql = "SELECT * FROM DANHMUC";
            DataProvider dp = new DataProvider();
            dp.open();

            ResultSet rs = dp.ExecuteQuery(sql);
            while (rs.next())
            {
                DanhMuc dm = new DanhMuc();

                dm.setMaDanhMuc(rs.getInt("MaDanhMuc"));
                dm.setTenDanhMuc(rs.getNString("TenDanhMuc"));
                dm.setMoTa(rs.getNString("MoTa"));
                dm.setSoSanPhamDangBan(rs.getInt("soSanPhamDangBan"));
                dm.setNgayTao(rs.getString("ngayTao"));
                dm.setTinhTrang(rs.getNString("tinhTrang"));

                listDanhMuc.add(dm);
            }
            dp.close();
        }
        catch (Exception e)
        {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }

        return listDanhMuc;
    }

    /**
     * Rút trích một danh mục sản phẩm
     * 
     * @param DanhMucID
     * @return Đối tượng DanhMuc
     */

    public static DanhMuc SelectDanhMucById(String DanhMucID)
    {
        DanhMuc dm = new DanhMuc();

        try
        {
            String sql = "SELECT * FROM DANHMUC WHERE MADANHMUC= " + DanhMucID;

            DataProvider dp = new DataProvider();
            dp.open();

            ResultSet rs = dp.ExecuteQuery(sql);
            while (rs.next())
            {
                dm.setMaDanhMuc(rs.getInt("MaDanhMuc"));
                dm.setTenDanhMuc(rs.getNString("TenDanhMuc"));
                dm.setMoTa(rs.getNString("MoTa"));
                dm.setSoSanPhamDangBan(rs.getInt("soSanPhamDangBan"));
                dm.setNgayTao(rs.getString("ngayTao"));
                dm.setTinhTrang(rs.getNString("tinhTrang"));
            }
            dp.close();
        }
        catch (Exception e)
        {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }
        return dm;
    }

    /**
     * Thêm một danh mục mới
     * @param đối tượng DanhMuc
     * @return boolean
     */
    public static boolean InsertDanhMuc(DanhMuc dm)
    {
        boolean kq = false;

        String sql = String
                .format("INSERT INTO DANHMUC(TENDANHMUC, MOTA, SOSANPHAMDANGBAN, NGAYTAO, TINHTRANG) VALUES(N'%s', N'%s', %d, '%s', N'%s')",
                        dm.getTenDanhMuc(), dm.getMoTa(), dm.getSoSanPhamDangBan(), dm.getNgayTao(), dm.getTinhTrang());
        
        try
        {
            DataProvider dp = new DataProvider();
            dp.open();
            
            int i = dp.executeUpdate(sql);
            if (i == 1)
                kq = true;
            dp.close();
            
            dp.close();
        }
        catch (Exception e)
        {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }

        return kq;
    }
    
    /**
     * Cập nhật thông tin của danh mục
     * @param đối tượng danh mục
     * @return boolean
     */
    
    public static boolean UpdateDanhMuc(DanhMuc dm)
    {
        boolean kq = false;
        
        String sql = String
                .format("UPDATE DANHMUC SET TENDANHMUC=N'%s', MOTA=N'%s', SOSANPHAMDANGBAN=%d, NGAYTAO='%s', TINHTRANG=N'%s' WHERE MADANHMUC='%s'",
                        dm.getTenDanhMuc(), dm.getMoTa(), dm.getSoSanPhamDangBan(), dm.getNgayTao(), dm.getTinhTrang(), dm.getMaDanhMuc());
        
        try
        {
            DataProvider dp = new DataProvider();
            dp.open();
            
            int i = dp.executeUpdate(sql);
            if (i == 1)
                kq = true;
            
            dp.close();
        }
        catch (Exception e)
        {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }
        
        return kq;
    }
    
    /**
     * Xóa một danh mục
     * @param Mã danh mục
     * @return boolean
     */
    public static boolean DeleteDanhMuc(String DanhMuc)
    {
        boolean kq = false;
        
        String sql = String.format("DELETE FROM DANHMUC WHERE MADANHMUC='%s'", DanhMuc);
        
        try
        {
            DataProvider dp = new DataProvider();
            dp.open();
            
            int i = dp.executeUpdate(sql);
            if (i == 1)
                kq = true;
            
            dp.close();
        }
        catch (Exception e)
        {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }
        
        return kq;
    }

    public static ArrayList<DanhMuc> SearchDanhMucByName(String name)
    {
        // TODO Auto-generated method stub
        ArrayList<DanhMuc> list = new ArrayList<DanhMuc>();
        
        String sql = "SELECT * FROM DANHMUC WHERE TENDANHMUC LIKE '%"+ name +"%'";
        try
        {
            DataProvider dp = new DataProvider();
            dp.open();
            
            ResultSet rs = dp.ExecuteQuery(sql);
            while (rs.next())
            {
                DanhMuc dm = new DanhMuc();
                
                dm.setMaDanhMuc(rs.getInt("MaDanhMuc"));
                dm.setTenDanhMuc(rs.getNString("TenDanhMuc"));
                dm.setMoTa(rs.getNString("MoTa"));
                dm.setSoSanPhamDangBan(rs.getInt("soSanPhamDangBan"));
                dm.setNgayTao(rs.getString("ngayTao"));
                dm.setTinhTrang(rs.getNString("tinhTrang"));
                
                list.add(dm);
            }
            
            dp.close();
        }
        catch (Exception e)
        {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }
        
        return list;
    }
}
